<template>
  <div>
    <FormPanel ref="from" :list="formList" @formChange="changeHandle" :isSubmitBtn="false" :collapse="false" labelWidth="130" />
    <FilterTable ref="table" :columns="columns" :dataSource="tableList" :isSelectColumn="false" height="auto" :onColumnsChange="columns => (this.columns = columns)">
      <template slot="controls" slot-scope="props"> </template>
    </FilterTable>
    <BreakSpace label="操作记录" />
    <FilterTable ref="tables" :columns="columns1" :dataSource="tableLists" :datakey="'records'" :isSelectColumn="false" height="auto" :onColumnsChange="columns => (this.columns1 = columns)">
    </FilterTable>

    <BaseDialog :visible.sync="isDiscount" :title="'折扣详情'" destroyOnClose :containerStyle="{ height: 'calc(100% - 60px)', overflow: 'auto', paddingBottom: '60px' }">
      <DiscountDetail :rowData="DiscountData" @close="Discountclose" />
    </BaseDialog>
    <div style="height:47px;"></div>
    <div
      :style="{
        position: 'absolute',
        left: 0,
        bottom: 0,
        right: 0,
        zIndex: 9,
        borderTop: '1px solid #e9e9e9',
        padding: '10px 20px',
        background: '#fff',
        textAlign: 'right'
      }"
    >
      <el-button @click="closeDrawer(1)">关 闭</el-button>
    </div>
  </div>
</template>
<script>
import { getLog } from '@/api/dealerSale/OrderManagement/OrderSubmission/index.js';
import { getAmount, getDiscount, getDiscountDetails, saveOrder, getNotPage, getDealerAddress, getDetail } from '@/api/omSale/OrderManagement/PurchaseOrderQuery/index.js';
import { dictionary } from '@/utils/dictMixin';
import Cookies from 'js-cookie';
import DiscountDetail from './DiscountDetail';
import moment from 'moment';
export default {
  data() {
    this.saveData = null;
    this.Amount = null;
    this.singleRebateTotalAmount = null;
    this.buildRebateTotalAmount = null;
    return {
      formList: this.createdFrom(),
      columns: this.createdTable(),
      tableList: [],
      isaddCar: false,
      carData: {},
      json: {},
      isDiscount: false,
      DiscountData: {},
      TotalAmount: '',
      singleRebateAmount: '',
      buildRebateAmount: '',
      dealerCode: Cookies.get('ownerCode'),
      columns1: this.createdTables(),
      tableLists: []
    };
  },
  components: {
    DiscountDetail
  },
  props: ['rowData'],
  created() {
    this.getLog(this.rowData.orderId);
    this.getDetail(this.rowData);
    this.getAmountDetail(this.dealerCode);
  },
  mounted() {
    this.table = this.$refs.table.$refs.pageTable;
  },
  mixins: [dictionary],
  methods: {
    createdFrom() {
      return [
        {
          type: 'BREAK_SPACE',
          label: '订单信息'
        },

        {
          type: 'INPUT',
          label: '订货单编号',
          fieldName: 'orderNo',
          placeholder: '请输入',
          disabled: true
        },
        {
          type: 'DATE',
          label: '订单年月',
          fieldName: 'orderYearMonth',
          disabled: true,
          placeholder: '请输入',
          dateType: 'month',
          initialValue: moment().format('YYYY-MM')
        },
        {
          type: 'SELECT',
          label: '订单类型',
          fieldName: 'orderType',
          placeholder: '请选择',
          disabled: true,
          itemList: this.createDictList('6006'),
          rules: [{ required: true, message: '请选择', trigger: 'change' }]
        },
        {
          type: 'SELECT',
          label: '订单细分类型',
          fieldName: 'orderDetailType',
          placeholder: '请选择',
          itemList: [],
          disabled: true,
          rules: [{ required: true, message: '请选择', trigger: 'change' }]
        },
        {
          type: 'SELECT',
          label: '运输方式',
          fieldName: 'transportType',
          placeholder: '请选择',
          disabled: true,
          itemList: this.createDictList('6004'),
          rules: [{ required: true, message: '请选择', trigger: 'change' }]
        },
        {
          type: 'SELECT',
          label: '是否使用返利',
          fieldName: 'isRebate',
          placeholder: '请选择',
          disabled: true,
          itemList: this.createDictList('1004'),
          initialValue: 10041001,
          rules: [{ required: true, message: '请选择', trigger: 'change' }]
        },
        {
          type: 'INPUT',
          precision: 2,
          label: '资金总余额(油)',
          fieldName: 'totalFuelAmount',
          placeholder: '请选择',
          disabled: true
        },
        {
          type: 'INPUT',
          precision: 2,
          label: '资金总余额(电)',
          fieldName: 'totalEnergyAmount',
          placeholder: '请选择',
          disabled: true
        },
        {
          type: 'INPUT',
          precision: 2,
          label: '单车返利余额(油)',
          fieldName: 'singleRebateFuelAmount',
          placeholder: '请选择',
          disabled: true
        },
        {
          type: 'INPUT',
          precision: 2,
          label: '建店返利余额(电)',
          fieldName: 'buildRebateEnergyAmount',
          placeholder: '请选择',
          disabled: true
        },
        {
          type: 'INPUT',
          precision: 2,
          label: '单车返利余额(电)',
          fieldName: 'singleRebateEnergyAmount',
          placeholder: '请选择',
          disabled: true
        },
        {
          type: 'INPUT',
          precision: 2,
          label: '建店返利余额(油)',
          fieldName: 'buildRebateFuelAmount',
          placeholder: '请选择',
          disabled: true
        },
        {
          type: 'INPUT_NUMBER',
          precision: 2,
          label: '单车返利使用金额(电)',
          fieldName: 'singleRebateEnergyTotalAmount',
          placeholder: '请选择',
          initialValue: 0.0,
          disabled: true
        },
        {
          type: 'INPUT_NUMBER',
          precision: 2,
          label: '单车返利使用金额(油)',
          fieldName: 'singleRebateFuelTotalAmount',
          placeholder: '请选择',
          initialValue: 0.0,
          disabled: true
        },
        {
          type: 'INPUT_NUMBER',
          precision: 2,
          label: '建店返利使用金额(电)',
          fieldName: 'buildRebateEnergyTotalAmount',
          placeholder: '请选择',
          initialValue: 0.0,
          disabled: true
        },
        {
          type: 'INPUT_NUMBER',
          precision: 2,
          label: '建店返利使用金额(油)',
          fieldName: 'buildRebateFuelTotalAmount',
          placeholder: '请选择',
          initialValue: 0.0,
          disabled: true
        },
        {
          type: 'INPUT_NUMBER',
          precision: 2,
          label: '实付总金额',
          fieldName: 'realPayTotalAmount',
          disabled: true
        },
        {
          type: 'BREAK_SPACE',
          label: '车辆信息'
        }
      ];
    },
    createdTable() {
      return [
        {
          title: '序号',
          dataIndex: 'index',
          width: 80,
          sorter: true,
          render: props => {
            return <span>{props.row.index + 1}</span>;
          }
        },
        {
          title: '产品代码',
          dataIndex: 'productCode',
          sorter: true,
          filter: true,
          filterType: 'input'
        },
        {
          title: '产品名称',
          dataIndex: 'productName',
          align: 'center',
          width: 400,
          sorter: true,
          filter: true,
          filterType: 'input'
        },
        {
          title: '车型名称',
          dataIndex: 'modelName',
          sorter: true,
          filter: true,
          filterType: 'input'
        },
        {
          title: '内饰',
          dataIndex: 'trimName',
          sorter: true,
          filter: true,
          filterType: 'input'
        },
        {
          title: '外饰',
          dataIndex: 'colorName',
          sorter: true,
          filter: true,
          filterType: 'input'
        },
        {
          title: '数量',
          dataIndex: 'orderNum',
          sorter: true,
          filter: true,
          filterType: 'input'
        },
        {
          title: '市场指导价',
          dataIndex: 'singleAmount',
          sorter: true,
          filter: true,
          filterType: 'input'
        },
        {
          title: '国补金额',
          dataIndex: 'subsidyAmount',
          sorter: true,
          filter: true,
          filterType: 'input'
        },
        {
          title: '折前单价',
          dataIndex: 'beforeSingleAmount',
          sorter: true,
          filter: true,
          filterType: 'input'
        },
        {
          title: '折扣总金额',
          dataIndex: 'discountTotalAmount',
          sorter: true,
          filter: true,
          filterType: 'input',
          summation: true,
          render: p => {
            return (
              <span class="discount" onClick={() => this.editHandle(p.row, 2)}>
                {p.row.discountTotalAmount}
              </span>
            );
          }
        },
        {
          title: '单车返利总金额',
          dataIndex: 'singleRebateTotalAmount',
          sorter: true,
          filter: true,
          filterType: 'input',
          summation: true
        },
        {
          title: '建店返利总金额',
          dataIndex: 'buildRebateTotalAmount',
          sorter: true,
          filter: true,
          filterType: 'input'
        },
        {
          title: '单车返利金额',
          dataIndex: 'singleRebateAmount',
          sorter: true,
          filter: true,
          filterType: 'input',
          precision: 2,
          hidden: true
        },
        {
          title: '建店返利金额',
          dataIndex: 'buildRebateAmount',
          sorter: true,
          filter: true,
          filterType: 'input',
          precision: 2,
          hidden: true
        },
        {
          title: '折后单价',
          dataIndex: 'afterDiscountAmount',
          sorter: true,
          filter: true,
          filterType: 'input'
        },
        {
          title: '折前总金额',
          dataIndex: 'totalAmount',
          sorter: true,
          filter: true,
          filterType: 'input',
          summation: true
        },
        {
          title: '折后总金额',
          dataIndex: 'afterTotalAmount',
          sorter: true,
          filter: true,
          filterType: 'input',
          summation: true
        },
        {
          title: '收车地址',
          dataIndex: 'detaildAddress',
          sorter: true,
          filter: true,
          filterType: 'input'
        },
        {
          title: '备注',
          dataIndex: 'remark',
          sorter: true,
          filter: true,
          filterType: 'input'
        }
      ];
    },
    changeHandle(val) {
      this.saveData = val;
    },
    createdTables() {
      return [
        {
          title: '序号',
          dataIndex: 'index',
          width: 80,
          sorter: true,
          fixed: 'left',
          render: props => {
            return <span>{props.row.index + 1}</span>;
          }
        },
        {
          title: '单据执行前状态',
          dataIndex: 'beforeOrderStatus',
          sorter: true,
          filter: true,
          filterType: 'checkbox',
          filterItems: this.createDictList('6043'),
          render: p => {
            return <span>{this.createDictText(p.row.beforeOrderStatus, '6043')}</span>;
          }
        },
        {
          title: '单独执行后状态',
          dataIndex: 'afterOrderStatus',
          sorter: true,
          filter: true,
          filterType: 'checkbox',
          filterItems: this.createDictList('6043'),
          render: p => {
            return <span>{this.createDictText(p.row.afterOrderStatus, '6043')}</span>;
          }
        },
        {
          title: '操作人员',
          dataIndex: 'createdName',
          sorter: true,
          filter: true,
          filterType: 'input'
        },
        {
          title: '操作时间',
          dataIndex: 'createdAt',
          sorter: true,
          filter: true,
          filterType: 'date-range'
        },
        {
          title: '操作类型',
          dataIndex: 'operationType',
          sorter: true,
          filter: true,
          filterType: 'input',
          render: p => {
            return <span>{p.row.operationType}</span>;
          }
        },
        {
          title: '审批意见',
          dataIndex: 'auditOpinion',
          sorter: true,
          filter: true,
          filterType: 'input'
        }
      ];
    },
    async getAmountDetail(code) {
      let res = await getAmount({ dealerCode: code });

      for (let i in res.data) {
        this.formList.map(x => {
          if (x.fieldName == i) {
            x.initialValue = res.data[i];
          }
        });
      }
      this.json = res.data;
      this.singleRebateTotalAmount = res.data.singleRebateAmount;
      this.buildRebateTotalAmount = res.data.buildRebateAmount;
      this.singleRebateAmount = res.data.singleRebateAmount;
      this.buildRebateAmount = res.data.buildRebateAmount;
    },
    async closeDrawer(type) {
      if (type == 1) {
        this.$emit('close');
      }
    },
    Discountclose() {
      this.isDiscount = false;
    },
    // 加载折扣信息
    async getNotPage(orderType) {
      let list = await getNotPage({ orderType: orderType });
      this.formList.map(x => {
        if (x.fieldName == 'orderDetailType') {
          x.itemList = list.data.map(x => ({ text: x.subName, value: x.subId }));
        }
      });
    },
    editHandle(data, type) {
      this.DiscountData = data;
      this.isDiscount = true;
    },
    // 获取详情
    async getDetail(data) {
      let res = await getDetail({ orderId: data.orderId, getType: 'avilable' });
      let num = 0;
      res.data.detailDTOList.map(x => {
        num = num + x.discountTotalAmount;
      });
      for (let i in res.data) {
        this.formList.map(x => {
          if (x.fieldName == 'buildRebateEnergyAmount') {
          } else if (x.fieldName == 'buildRebateFuelAmount') {
          } else if (x.fieldName == 'singleRebateEnergyAmount') {
          } else if (x.fieldName == 'singleRebateFuelAmount') {
          } else if (x.fieldName == 'totalEnergyAmount') {
          } else if (x.fieldName == 'totalFuelAmount') {
          } else if (x.fieldName == 'flsyzje') {
            x.initialValue = res.data.singleRebateTotalAmount + res.data.buildRebateTotalAmount;
          } else if (x.fieldName == 'zkhzje') {
            x.initialValue = num;
          } else if (i == x.fieldName) {
            x.initialValue = res.data[i];
          }
        });
      }
      this.getNotPage(res.data.orderType);

      this.tableList = res.data.detailDTOList || [];
    },
    async getLog(id) {
      let res = await getLog({ orderId: id });
      console.log(res, '2');
      this.tableLists = res.data || [];
    }
  }
};
</script>
<style lang="less">
.discount {
  text-decoration: underline;
  color: #d1291a;
  cursor: pointer;
}
</style>
